<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class ACL_Hook {
  
  // este hook eh chamado apos o construtor do controlador.
  // testa se o usuario tem acesso a pagina requerida e caso o acesso seja
  // negado, redireciona para a pagina padrao do sistema.
  public function permissionTest() {
    // pega o controlador
    $ci =& get_instance();
    
    // verifica no banco se o usuario possui permissao para acessar a pagina
    $rights = hasRights($ci->uri->segment(1), $ci->uri->segment(2));
    if ($rights == 1)
      return;
    
    // permissao negada. deixando mensagem de erro
    $uri = $ci->uri->segment(1).'/'.$ci->uri->segment(2);
    switch ($rights) {
      case -2: $message = 'Permissão negada: Página "'.$uri.'" não cadastrada no sistema.';             break;
      case -1: $message = 'Permissão negada: A página "'.$uri.'" requer que o login seja efetuado.';    break;
      case 0:  $message = 'Permissão negada: Você não tem permissão para acessar a página "'.$uri.'".'; break;
      default:                                                                                          break;
    }
    $ci->session->set_flashdata('error', $message);
    redirect($ci->router->default_controller.'/index');
  }
}
